package com.taowan.xunbaozl.morning_speak.design_pattern.day09;

import android.os.Build;

/**
 * Created by wgl on 2016/3/3 0003.
 * 建造者模式
 */

//        一、使用建造者模式的好处
//        1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
//        2.具体的建造者类之间是相互独立的，对系统的扩展非常有利。
//        3.由于具体的建造者是独立的，因此可以对建造过程逐步细化，而不对其他的模块产生任何影响。
//
//        二、使用建造者模式的场合:
//        1.创建一些复杂的对象时，这些对象的内部组成构件间的建造顺序是稳定的，但是对象的内部组成构件面临着复杂的变化。
//        2.要创建的复杂对象的算法，独立于该对象的组成部分，也独立于组成部分的装配方法时。

public class Builder {
    public static void main(String[] args) {
        Product product = new Product();
    }
}


class Product {
    private Build build;

    public Product() {
    }

    public void setPart(int a) {
        System.out.println(" 组装di" + a);
    }
}

interface IBuilder {
    void setPart1();

    void setPart2();

    void setPart3();

    Product getProduct();
}

class MyBuilder implements IBuilder {

    public Product product;

    public MyBuilder(Product product) {
        this.product = product;
    }

    @Override
    public void setPart1() {
    }

    @Override
    public void setPart2() {
        System.out.println();
    }

    @Override
    public void setPart3() {

    }

    @Override
    public Product getProduct() {
        return product;
    }
}

class Master {
    private IBuilder builder;

    public Master(IBuilder builder) {
        this.builder = builder;
    }

    public void builderProduct() {
        builder.setPart1();
        builder.setPart2();
        builder.setPart3();
    }

}




